package ar.edu.unrn.lia.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

@Entity
@Table(name = "alquiler_periodo")
public class AlquilerPeriodo extends BaseEntity implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 8512033827518376905L;

	private Integer nroPeriodo;

	private Integer periodo;

	private Integer monto;

	private Alquiler alquiler;

	public AlquilerPeriodo() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	

	public AlquilerPeriodo(Integer nroPeriodo, Integer periodo, Integer monto) {
		super();
		this.nroPeriodo = nroPeriodo;
		this.periodo = periodo;
		this.monto = monto;
	}



	@ManyToOne(optional = false, fetch = FetchType.LAZY)
	@JoinColumn(name = "alquiler_id", nullable = false)
	public Alquiler getAlquiler() {
		return alquiler;
	}

	public void setAlquiler(Alquiler alquiler) {
		this.alquiler = alquiler;
	}

	@Column(name = "periodo", nullable = false)
	@NotNull(message = "{name.notnull}")
	//@Size(min = 1, max = 12, message = "{name.size}")
	public Integer getPeriodo() {
		return periodo;
	}

	public void setPeriodo(Integer periodo) {
		this.periodo = periodo;
	}

	@Column(name = "monto", nullable = false)
	public Integer getMonto() {
		return monto;
	}

	public void setMonto(Integer monto) {
		this.monto = monto;
	}

	@Column(name = "nroPeriodo", nullable = false)
	@NotNull(message = "{name.notnull}")
	//@Size(min = 1, max = 12, message = "{name.size}")
	public Integer getNroPeriodo() {
		return nroPeriodo;
	}

	public void setNroPeriodo(Integer nroPeriodo) {
		this.nroPeriodo = nroPeriodo;
	}

	public Integer calculaMontoCuotaPropietario() {
		return (getMonto() - (getMonto() * getAlquiler().getPropiedad()	.getPropietario().getPorcentaje()) / 100);
	}

}
